Page({
  data: {
    countDownVisible: false, // 倒计时显示
    timeData: {},

    mobile: '', // 手机号
    code: '', // 验证码
    backUrl: '', // 回跳地址
  },

  onLoad({ backUrl }) {
    // 获取页面路径参数 得到回跳地址
    this.setData({ backUrl: backUrl })
  },

  // 好维护 好复用
  verifyMobile() {
    const reg = /^1[3-9]\d{9}$/
    const flag = reg.test(this.data.mobile.trim())

    if (!flag) wx.toast('手机号有问题')

    return flag
  },

  verifyCode() {
    const reg = /^\d{6}$/
    const flag = reg.test(this.data.code.trim())

    if (!flag) wx.toast('验证码有问题')

    return flag
  },

  // 发送验证码:
  async getCode() {
    // 校验手机号 => 发请求(发短信验证码) => 倒计时打开

    // 1.校验
    if (!this.verifyMobile()) return

    // 2.发请求
    // console.log('可以发请求了')
    // wx.request  是通过 data 传参
    // wechat-http 刚好也是通过 data 传参(不管你是什么请求方式)
    const { code, data } = await wx.http({
      method: 'get',
      url: '/code',
      data: {
        mobile: this.data.mobile.trim(),
      },
    })

    // 学习阶段 不可能真的发送验证码 是通过响应的数据告诉你验证码
    // 真正上线 一定是发送真的验证码 而响应中没有验证码
    if (code !== 10000) return wx.toast('验证码发送失败')

    // 3.打开倒计时
    wx.toast('请查收短信')
    this.setData({ xxx: data.code })
    this.setData({
      countDownVisible: true,
    })
  },

  // 点击登录
  async submit() {
    // 校验手机号 校验验证码 => 请求
    if (!this.verifyMobile()) return
    if (!this.verifyCode()) return

    // console.log('可以登录啦....')
    const { code, data } = await wx.http({
      url: '/login',
      method: 'post',
      data: {
        mobile: this.data.mobile.trim(),
        code: this.data.code.trim(),
      },
    })

    // console.log(res)
    if (code !== 10000) return wx.toast()

    // 登录成功 => 提示 + 存 token + 跳转
    wx.toast('登录成功')
    getApp().setToken(data.token)
    getApp().setRefreshToken(data.refreshToken)
    // wx.navigateTo   wx.redirectTo

    // 跳转回原来想去但没去成的页面   /pages/my/index  特殊在是个 tab 页  => tab 页面需要 wx.switchTab
    if (this.data.backUrl === '/pages/my/index') {
      // 这是 /pages/my/index
      wx.switchTab({
        url: this.data.backUrl,
      })
    } else {
      // 如果不是 /pages/my/index
      wx.redirectTo({
        url: this.data.backUrl,
      })
    }
  },

  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      // 倒计时显示两个条件满足其一即可:   要么分钟数是 1     要么秒数 > 0
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
})
